import type { RouteRecordRaw } from 'vue-router'
/**
 * 建议：路由 path 路径与文件夹名称相同，找文件可浏览器地址找，方便定位文件位置
 *
 * 路由meta对象参数说明
 * meta: {
 *      title:          菜单栏及 tagsView 栏、菜单搜索名称（国际化）
 *      isLink：        是否超链接菜单，开启外链条件，`1、isLink: 链接地址不为空 2、isIframe:false`
 *      isHide：        是否隐藏此路由
 *      isKeepAlive：   是否缓存组件状态
 *      isAffix：       是否固定在 tagsView 栏上
 *      isIframe：      是否内嵌窗口，开启条件，`1、isIframe:true 2、isLink：链接地址不为空`
 *      roles：         当前路由权限标识，取角色管理。控制路由显示、隐藏。超级管理员：admin 普通角色：common
 *      icon：          菜单、tagsView 图标，阿里：加 `iconfont xxx`，fontawesome：加 `fa xxx`
 * }
 */

/**
 * 定义动态路由
 * 前端添加路由，请在顶级节点的 `children 数组` 里添加
 * @description 未开启 isRequestRoutes 为 true 时使用（前端控制路由），开启时第一个顶级 children 的路由将被替换成接口请求回来的路由数据
 * @description 各字段请查看 `/@/views/system/menu/component/addMenu.vue 下的 ruleForm`
 * @returns 返回路由菜单数据
 */
export const dynamicRoutes: RouteRecordRaw[] = [
  {
    path: '/',
    name: 'Index',
    component: () => import('/@/components/layout/index.vue'),
    redirect: '/root',
    meta: { isKeepAlive: true },
    children: []
  }
]

/**
 * 定义错误页面404、401等界面
 * @see https://next.router.vuejs.org/zh/guide/essentials/history-mode.html#netlify
 */
export const errorRoutes = [
  {
    path: '/error/:error',
    name: 'ErrorCommonPage',
    component: () => import('/@/views/error/index.vue'),
    meta: {
      title: '出错喽~',
      isHide: true
    }
  },
  {
    path: '/:path(.*)*',
    name: 'ErrorNotFound',
    redirect: '/error/404',
    meta: {
      isHide: true
    }
  }
]

/**
 * 定义静态路由（默认路由）
 * 此路由不要动，前端添加路由的话，请在 `dynamicRoutes 数组` 中添加
 * @description 前端控制直接改 dynamicRoutes 中的路由，后端控制不需要修改，请求接口路由数据时，会覆盖 dynamicRoutes 第一个顶级 children 的内容（全屏，不包含 layout 中的路由出口）
 * @returns 返回路由菜单数据
 */
export const staticRoutes: RouteRecordRaw[] = [
  // {
  //   path: '/login',
  //   name: 'login',
  //   component: () => import('/@/views/login/index.vue'),
  //   meta: {
  //     title: '登录'
  //   }
  // }
  /**
   * 提示：写在这里的为全屏界面，不建议写在这里
   * 请写在 `dynamicRoutes` 路由数组中
   */
  // {
  //   path: '/403',
  //   name: 'noPermission',
  //   component: () => import('/@/views/error/403.vue'),
  //   meta: {
  //     title: '没有权限',
  //     isHide: true
  //   }
  // },
]

/**
 * 开发者工具路由, 开发模式下, 会自动添加到页面路由中
 */
export const developmentRoutes: RouteRecordRaw = {
  path: '/csdev',
  name: 'CsDev',
  component: () => import('/@/components/layout/router-view/parent.vue'),
  redirect: '/csdev/setting',
  meta: {
    title: '开发者工具',
    icon: 'SvgIconFriendGroup'
  },
  children: [
    {
      path: '/csdev/setting',
      name: 'CsDevSetting',
      component: () => import('/@/views/csdev/setting.vue'),
      meta: {
        title: '本地配置',
        isKeepAlive: true
      }
    },
    {
      path: '/csdev/icons',
      name: 'CsDevIcons',
      component: () => import('/@/views/csdev/icons.vue'),
      meta: {
        title: '本地图标库',
        isKeepAlive: true,
        icon: 'SvgIconFriendGroup'
      }
    },
    {
      path: '/csdev/code',
      name: 'CsDevCode',
      component: () => import('/@/views/csdev/code/index.vue'),
      meta: {
        title: '代码生成',
        isKeepAlive: true
      }
    }
  ]
}
